"""
封装了自定以的分页器
"""
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response

class MyPage(PageNumberPagination):
    page_query_param = 'page' # 指定过滤字段获取第几页
    page_size_query_param = 'pagesize' # 指定过滤字段每页划分几个
    page_size = 10 # 后台默认页面10个划分
    max_page_size = 20 # 后台限定每页最多划分几个

    def get_paginated_response(self, data):
        """
        自定义的分页器中，重写该函数。
        手动构造一个符合接口定义的想要数据格式;
        :param data: 视图中查询集序列化的结果；
        :return: 返回响应对象
        """
        return Response(data={
            'counts': self.page.paginator.count, # 总数量,
            'lists': data, # 当前页的序列化的结果,
            'page': self.page.number, # 当前页数

            'pages' : self.page.paginator.num_pages, # 总页数

            'pagesize': self.page_size # 后台默认每页几个
        })